package br.com.saeng2D.util;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class Calculadora extends JFrame{  
	private static final long serialVersionUID = 1L;

	private JTextField campoTxt = new JTextField(16);
      
    private JButton botaoSom = new JButton("+");  
    private JButton botaoSub = new JButton("-");  
    private JButton botaoMult = new JButton("*");  
    private JButton botaoDiv = new JButton("/");  
    private JButton botaoc = new JButton("c");  
    private JButton botaoi = new JButton("=");  
    private JButton botao9 = new JButton("9");  
    private JButton botao8 = new JButton("8");  
    private JButton botao7 = new JButton("7");  
    private JButton botao6 = new JButton("6");  
    private JButton botao5 = new JButton("5");  
    private JButton botao4 = new JButton("4");  
    private JButton botao3 = new JButton("3");  
    private JButton botao2 = new JButton("2");  
    private JButton botao1 = new JButton("1");  
    private JButton botao0 = new JButton("0");    
      
    public Calculadora(){         
        super(" Calculadora ");  
        this.setBounds(100, 100, 220, 200); 
        this.setLayout(new FlowLayout());
        this.setResizable(false);        
       
        this.add(campoTxt);  
        this.add(botao7);  
        this.add(botao8);          
        this.add(botao9);  
        this.add(botaoDiv);  
        this.add(botao4);  
        this.add(botao5);         
        this.add(botao6);  
        this.add(botaoMult);  
        this.add(botao1);  
        this.add(botao2);  
        this.add(botao3);  
        this.add(botaoSub);  
        this.add(botao0);  
        this.add(botaoc);  
        this.add(botaoi);  
        this.add(botaoSom); 
        
        setVisible(true);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
          
          
        Eventos calcs = new Eventos(); //objeto 'calcs' para  criar a classe interna 'Eventos'  
          
        // Adição do 'ActionListener' aos botões 
        botao0.addActionListener(calcs);  
        botao1.addActionListener(calcs);  
        botao2.addActionListener(calcs);  
        botao3.addActionListener(calcs);  
        botao4.addActionListener(calcs);  
        botao5.addActionListener(calcs);  
        botao6.addActionListener(calcs);  
        botao7.addActionListener(calcs);  
        botao8.addActionListener(calcs);  
        botao9.addActionListener(calcs);  
        botaoc.addActionListener(calcs);  
        botaoSom.addActionListener(calcs);  
        botaoSub.addActionListener(calcs);  
        botaoMult.addActionListener(calcs);  
        botaoDiv.addActionListener(calcs);  
        botaoi.addActionListener(calcs);           
    }    
  
    private class Eventos implements ActionListener { // Classe interna, com implementação 'ActionListener' para tratamento de eventos    
    	double rs, numero1 , numero2;  
    	char operador;  
 
	    public void actionPerformed(ActionEvent e){       
	        if(e.getSource() == botao0){                          
	            campoTxt.setText(campoTxt.getText() + botao0.getText());              
	        }  
	        if(e.getSource() == botao1){  
	            campoTxt.setText(campoTxt.getText() + botao1.getText());  
	        }  
	        if(e.getSource() == botao2){  
	            campoTxt.setText(campoTxt.getText() + botao2.getText());  
	        }  
	        if(e.getSource() == botao3){  
	            campoTxt.setText(campoTxt.getText() + botao3.getText());  
	        }  
	        if(e.getSource() == botao4){  
	            campoTxt.setText(campoTxt.getText() + botao4.getText());  
	        }  
	        if(e.getSource() == botao5){  
	            campoTxt.setText(campoTxt.getText() + botao5.getText());  
	        }  
	        if(e.getSource() == botao6){  
	            campoTxt.setText(campoTxt.getText() + botao6.getText());  
	        }  
	        if(e.getSource() == botao7){  
	            campoTxt.setText(campoTxt.getText() + botao7.getText());  
	        }  
	        if(e.getSource() == botao8){  
	            campoTxt.setText(campoTxt.getText() + botao8.getText());  
	        }  
	        if(e.getSource() == botao9){  
	            campoTxt.setText(campoTxt.getText() + botao9.getText());  
	        }  
	        if(e.getSource() == botaoc){  
	            campoTxt.setText(""); 
	        }         
	        if (e.getSource()== botaoSub){  
	            numero1 = Double.parseDouble(campoTxt.getText());                          
	            campoTxt.setText("");  
	            operador = '-';  
	        }         
	        if (e.getSource()== botaoMult){  
	            numero1 = Double.parseDouble(campoTxt.getText());                          
	            campoTxt.setText("");  
	            operador = '*';          
	        }  
	        if (e.getSource()== botaoDiv){  
	            numero1 = Double.parseDouble(campoTxt.getText());                          
	            campoTxt.setText("");  
	            operador = '/';          
	        }         
	        if(e.getSource() == botaoSom){  
	            numero1 = Double.parseDouble(campoTxt.getText());                          
	            campoTxt.setText("");         
	            operador = '+';  
	        }  
	          
	        if(e.getSource() == botaoi){  
	             numero2 = Double.parseDouble(campoTxt.getText());             
	                      
		           switch(operador){  
		               case ('+'): 
		                   rs = (numero1 + numero2);  
		                   break;  
		               case ('-'):  
		                   rs = (numero1 - numero2);  
		                   break;  
		               case ('*'):
		            	   rs = (numero1 * numero2);
		               	   break;  
		               case ('/'):  
		                   rs = (numero1 / numero2);   
		                   break;
		           }  
		           campoTxt.setText("" + rs);   
		       }         
	          
	    	}     
    	}   
}

